Skip to content
标签
OSS
工具
字数
430 字
阅读时间
3 分钟

一、简介

OSS服务:

海量、安全、低成本、高可靠的云存储服务,提供99.999999999%的数据可靠性。使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本。

使用:

创建Bucket,相当于存储的容器。

选择Bucket后可看到对应的基本信息。(url、小号流量)

二、图片上传

pom依赖

xml
<dependency>
    <groupId>com.aliyun.oss</groupId>
	<artifactId>aliyun-sdk-oss</artifactId>
	<version>2.8.3</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.4</version>
</dependency>
<dependency>
	<groupId>joda-time</groupId>
	<artifactId>joda-time</artifactId>
	<version>2.9.9</version>
</dependency>

配置文件

properties
aliyun.endpoint=oss-cn-qingdao.aliyuncs.com
aliyun.accessKeyId=LTAIfC7fUsPj7Rfq
aliyun.accessKeySecret=c2Vo3q1AmivtY8lxFnfsCfkO2c2HCk
aliyun.bucketName=itcast-haoke
aliyun.urlPrefix=http://itcast-haoke.oss-cn-qingdao.aliyuncs.com/

配置类

java
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@PropertySource(value = {"classpath:aliyun.properties"})
@ConfigurationProperties(prefix = "aliyun")
@Data
public class AliyunConfig {
    private String endpoint;
    private String accessKeyId;
    private String accessKeySecret;
    private String bucketName;
    private String urlPrefix;
    @Bean
    public OSS oSSClient() {
        return new OSSClient(endpoint, accessKeyId, accessKeySecret);
    }
}

图片上传

java
// 允许上传的格式
private static final String[] IMAGE_TYPE = new String[]{".bmp", ".jpg",".jpeg", ".gif", ".png"};
@Autowired
private OSS ossClient;
@Autowired
private AliyunConfig aliyunConfig;

public PicUploadResult upload(MultipartFile uploadFile) {
	// 校验图片格式
	boolean isLegal = false;
	for (String type : IMAGE_TYPE) {
		if(StringUtils.endsWithIgnoreCase(uploadFile.getOriginalFilename(),type)) {
            isLegal = true;
		break;
	}
}
// 封装Result对象,并且将文件的byte数组放置到result对象中
PicUploadResult fileUploadResult = new PicUploadResult();
    if(!isLegal){
    	fileUploadResult.setStatus("error");
        return fileUploadResult;
    }
// 文件新路径
String fileName = uploadFile.getOriginalFilename();
String filePath = getFilePath(fileName);
// 上传到阿里云
try {
	ossClient.putObject(aliyunConfig.getBucketName(), filePath, new ByteArrayInputStream(uploadFile.getBytes()));
} catch (Exception e) {
	e.printStackTrace();
	//上传失败
	fileUploadResult.setStatus("error");
	return fileUploadResult;
}
    fileUploadResult.setStatus("done");
    fileUploadResult.setName(this.aliyunConfig.getUrlPrefix() + filePath);
    fileUploadResult.setUid(String.valueOf(System.currentTimeMillis()));
    return fileUploadResult;
}
private String getFilePath(String sourceFileName) {
    DateTime dateTime = new DateTime();
    return "images/" + dateTime.toString("yyyy")+ "/" + dateTime.toString("MM") + "/"+ dateTime.toString("dd") + "/" + System.currentTimeMillis() +RandomUtils.nextInt(100, 9999) + "." +StringUtils.substringAfterLast(sourceFileName, ".");
    }
}

2.1 添加水印

在oss的图片管理页面 新建样式 自定义图片处理规则。